package com.bidevalution.dao.mapper;

import com.bidevalution.dao.entity.BeSectionInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 获取标段数据
 */
@Mapper
public interface BeSectionInfoMapper {
    /**
     * 获取标段信息列表
     *
     * @param type            区分今日开标和历史开标数据（1、今日开标 2、历史开标）
     * @param sectionName     标段名称
     * @param isEnterUserType 是否企业用户
     * @param orgCode         企业组织机构代码
     * @param enterpriseId    企业Id
     * @return
     */
    List<BeSectionInfo> getBeSectionList(@Param("type") Integer type, @Param("sectionName") String sectionName, @Param("isEnterUserType") boolean isEnterUserType,
                                         @Param("orgCode") String orgCode, @Param("enterpriseId") String enterpriseId);

    List<BeSectionInfo> getLiveBeSectionList();

    List<BeSectionInfo> getLiveListByRoom(@Param("roomName") String roomName);

    List<BeSectionInfo> getChatSectionList();

    List<BeSectionInfo> getAllList(@Param("sectionName") String sectionName, @Param("orgCode") String orgCode);

    /**
     * 根据主键查询标段信息
     *
     * @param seqId seqId
     * @return
     */
    BeSectionInfo selectByPrimaryKey(@Param("seqId") String seqId);

    /**
     * 更新标段状态
     *
     * @param sectionId
     * @param sectionStage
     * @return
     */
    Integer updateSectionStage(@Param("sectionId") String sectionId, @Param("sectionStage") String sectionStage);

    /**
     * 新增解密开始时间
     *
     * @param sectionId
     * @return
     */
    Integer insertDecryptStartTime(@Param("sectionId") String sectionId);

    /**
     * 获取今日开标项目数据
     *
     * @return
     */
    List<BeSectionInfo> getTodaySectionList();

    /**
     * 获取招标代理今日评审项目列表
     *
     * @param sectiName
     * @param sectiCode
     * @param startTime
     * @param endTime
     * @return
     */
    List<BeSectionInfo> getAgentSectionList(@Param("sectiName") String sectiName, @Param("sectiCode") String sectiCode, @Param("orgCode") String orgCode,
                                            @Param("startTime") String startTime, @Param("endTime") String endTime);

    int insert(BeSectionInfo record);

    int deleteByPrimaryKey(String seqId);

    int insertSelective(BeSectionInfo record);

    /**
     * 根据标段id选择性更新
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(BeSectionInfo record);

    int updateByPrimaryKey(BeSectionInfo record);

    /**
     * 获取专家权限下今日评审项目列表
     * 专家登录名
     * @return
     */
    List<BeSectionInfo> getExpertSectionList(String loginName);

    /**
     * 获取专家是否参与评审某个项目
     *
     * @param sectionId sectionId
     * @return
     */
    BeSectionInfo getSectionInfoByLoginName(@Param("sectionId") String sectionId, @Param("loginName") String loginName);
    BeSectionInfo getSectionInfoByCode(@Param("sectionCode") String sectionCode);
    BeSectionInfo getSectionInfoById(@Param("sectionId") String sectionId);
    BeSectionInfo getSectionInfoByProjId(@Param("projectId") String projectId);
    /**
     * 根据标段时间查询标段
     * @param @param startDate
     * @param @param endDate
     * @param @return 参数
     * @return List<BeSectionInfo> 返回类型
     * @throws
     */
    List<BeSectionInfo> getListByBidOpenTime(@Param("startDate")Date startDate, @Param("endDate")Date endDate);
    
    List<BeSectionInfo> getAllSectionList(@Param("orgCode")String orgCode,@Param("areaId") String areaId, @Param("sectionName") String sectionName, @Param("sectionCode") String sectionCode);
    
    List<BeSectionInfo> getListByOrgCode(String orgCode,@Param("startDate")Date startDate, @Param("endDate")Date endDate);

    List<BeSectionInfo> getListByIds(String ids);

    BeSectionInfo getSectionInfoByCodeAndName(@Param("sectionCode") String sectionCode, @Param("sectionName") String sectionName);

    /**
     * 更新是否远程评标状态
     * @param record
     * @return
     */
    int updateIsRemoteState(BeSectionInfo record);
}